// 封装axios的获取
/* */
// 引入全局报错elment ui的全局方法
import { Message, Loading } from 'element-ui'
// 引入vue和store
import Vue from 'vue'
import store from '@/store'
// 1.引入axios
import axios from 'axios'

// 获取 环境配置项中的api的基础路径
console.log(process.env.VUE_APP_API_URL)
const service = axios.create({
  baseURL: process.env.VUE_APP_API_URL, // "http://localhost:3007",
  timeout: 10000
})

// 创建 保存 旋转小图标的变量
var loadObj = null
// 请求拦截
service.interceptors.request.use(
  (config) => {
    console.log(config)
    if (!loadObj) {
      loadObj = Loading.service({
        lock: true,
        target: '#loading',
        text: '加载中...',
        spinner: 'el-icon-loading',
        background: 'ragb(0,0,0,0.5)'
      })
    }
    // 假设有token，需要设置token令牌
    config.headers['user-token'] = store.getters.token
    return config
  },
  (error) => {
    Vue.nextTick(() => { // 以服务的方式调用的Loading需要异步关闭
      console.log(loadObj)
      loadObj.close()
    })
    // 表示错误返回
    return Promise.reject(error)
  }
)
// 响应拦截
service.interceptors.response.use(
  (response) => {
    // 对响应数据做点什么
    console.log(response)
    // setTimeout(() => {
    Vue.nextTick(() => { // 以服务的方式调用的Loading需要异步关闭
      loadObj.close()
    })
    // }, 2000)

    if (response.data.code == 666) {
      return response
    } else {
      Message({
        message: response.data.msg,
        type: 'error'
      })
      return Promise.reject(response.data.msg)
    }
  }, (error) => {
    Vue.nextTick(() => { // 以服务的方式调用的Loading需要异步关闭
      loadObj.close()
    })
    Message({
      message: error,
      type: 'error'
    })
    return Promise.reject(error)
  }
)

// 输出
export default service
